Technical Q&A

QTW 95 - QuickTime 3 for Windows SDK で発生する Borland 5.0 C++ のリンクエラー(1999 年 5 月 3 日)


Q: QuickTime 3 for Windows SDK をダウンロードしたのですが、Borland 5.0 C++ コンパイラ/リンカと「.lib」ファイルとの相性が悪いようです (32 ビット版の QuickTime 2.1.2 ファイルは問題なく動作していました)。tlink32 を介してリンクしようとすると、「Bad object file 'C:¥BC5¥LIB¥qtmlClient.lib' near file offset 0」というエラーが返されます。何が悪いのでしょうか。

A: Borland は、uSoft のフォーマットと互換性のない 32 ビットの lib フォーマットを持っています (しかも、Borland のリンカはその独自のフォーマットだけしかを読み込みません)。以前の QTW 2.1.2 SDK には、uSoft lib と Borland 32 ビット lib がそれぞれ含まれていましたが、QuickTime 3 for Windows には uSoft lib だけが同梱されています。

この問題を回避するには、2 つの方法があります。

1. QuickTime 3 for Windows SDK に用意されている qtmlclient.dll を使用します。QuickTime 3 for Windows SDK には、dll にリンクされる qtmlclient.lib ライブラリがすべて含まれています。Borland には、インポート lib を作成できるツールがあります (qtmlclient.lib を呼び出さないでください。そうでないと、本当の混乱してしまいます)。このアプローチの唯一の問題は、DLL からエクスポートした名前には、Borland が想定している先頭のアンダースコアがないということです。

このアンダースコアの問題を回避するため、次の例のように、プロジェクトの DEF ファイルに IMPORTS セクションを追加して、使用する必要のあるそれぞれの QuickTime 関数に明示的なインポートステートメントを組み込みます。

IMPORTS
   _ActivatePalette  = qtmlclient.ActivatePalette
   _AddCallBackToTimeBase = qtmlclient.AddCallBackToTimeBase
   _AddComp  =   qtmlclient.AddComp
   _AddEmptyTrackToMovie = qtmlclient.AddEmptyTrackToMovie
   _AddFilePreview  = qtmlclient.AddFilePreview
.
.
.
など
         

2. uSoft lib を認識できるコンパイラ/リンカを使用します。


-- Scott Kuechle
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question

To contact us, please use the Contact Us page.